﻿#define _CRT_SECURE_NO_WARNINGS 1

///*局部变量在栈区创建，因为栈区的生长方向是高地址向低地址生长，
//所以栈区先使用高地址处的空间后使用低地址处的空间，又因为数组随着下标的增长，
//地址是由低到高变化的，所以当数组越界访问到一定程度时，就会访问到变量i*/
//#include <stdio.h>
//
//int main()
//{
//	int i = 0;
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (i = 0; i <= 12; i++)
//	{
//		arr[i] = 0;
//		printf("hello bit\n");
//	}
//	return 0;
//}

////调整数组使奇数全部都位于偶数前面
//#include<stdio.h>
//
//int main()
//{
//	int arr[10];
//	int i = 0;
//	int tmp = 0;
//	for (i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//
//	for (i = 0; i < 10; i++)
//	{
//		if (arr[i] % 2 != 0)
//			continue;
//		else
//		{
//			int j = 0;
//			int num = 0;
//			for (j = 9; j > i; j--)
//			{
//				if (i == 9 - num)
//					break;
//				if (arr[i] % 2 == 0)
//				{
//					tmp = arr[i];
//					arr[i] = arr[j];
//					arr[j] = tmp;
//					num++;
//				}
//				else
//					continue;
//			}
//		}
//	}
//
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}

////模拟实现库函数strcpy
//#include<stdio.h>
//#include<assert.h>
//#include<string.h>
//
//char* my_strcpy(char* dest, const char* source)
//{
//	assert(dest && source);
//	int ret = strlen(source);
//	int i = 0;
//	do
//	{
//		*(dest + i) = *(source + i);
//		i++;
//	} while (*(source + i) != 0);
//
//	return dest;
//}
//
//int main()
//{
//	char source[20] = "hello world";
//	char dest[20] = { 0 };
//	printf("%s", my_strcpy(dest, source));
//
//	return 0;
//}

////模拟实现库函数strlen
//#include<stdio.h>
//#include<assert.h>
//#include<string.h>
//
//unsigned int my_strlen(const char* arr)
//{
//	assert(arr);
//	int num = 0;
//	while (*(arr + num) != 0)
//	{
//		num++;
//	}
//
//	return num;
//}
//
//int main()
//{
//	char arr[20] = { 0 };
//	gets(arr);
//	printf("%d", my_strlen(arr));
//
//	return 0;
//}

////有序序列判断
//#include<stdio.h>
//#include<stdlib.h>
//
//int main()
//{
//	int n = 0;
//	int tag = 0;
//	scanf("%d", &n);
//	int* arr = (int*)malloc(n * (sizeof(int)));
//	int i = 0;
//	for (i = 0; i < n; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	while (arr[i - 1] == arr[i - 2])
//	{
//		if (i == 2)
//		{
//			tag++;
//			break;
//		}
//		i--;
//	}
//	for (i = 1; i < n; i++)
//	{
//		if (arr[i] > arr[i - 1])
//			continue;
//		else
//		{
//			tag += 1;
//			break;
//		}
//	}
//	for (i = 1; i < n; i++)
//	{
//		if (arr[i] < arr[i - 1])
//			continue;
//		else
//		{
//			tag -= 1;
//			break;
//		}
//	}
//	if (tag != 0)
//		printf("sorted\n");
//	else
//		printf("unsorted\n");
//
//	free(arr);
//	arr = NULL;
//	return 0;
//}

////输出最高分和最低分之差
//#include<stdio.h>
//#include<stdlib.h>
//
//int main()
//{
//	int n = 0;
//	int i = 0;
//	int dvalue = 0;
//	scanf("%d", &n);
//	int* arr = (int*)malloc(n * sizeof(int));
//	for (i = 0; i < n; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	int max = arr[0];
//	int min = arr[0];
//	for (i = 0; i < n; i++)
//	{
//		if (arr[i] > max)
//			max = arr[i];
//		else if (arr[i] < min)
//			min = arr[i];
//	}
//	printf("%d", max - min);
//	return 0;
//}